Return user_info of tgu_group_user_locations_api the same as tg_group_detail_api

Brightcells 8 years ago
parent
commit
d4f34707b9
4 changed files with 22 additions and 7 deletions
  1. 2 0
      account/models.py
  2. 4 3
      group/tourguidegroupuser_views.py
  3. 15 4
      utils/redis/rgroup.py
  4. 1 0
      utils/redis/rkeys.py

+ 2 - 0
account/models.py

@@ -322,8 +322,10 @@ class UserInfo(CreateUpdateMixin):
322 322
     def data(self):
323 323
         return {
324 324
             'user_id': self.user_id,
325
+            'name': self.name,
325 326
             'username': self.username,
326 327
             'nickname': self.nickname,
328
+            'avatar': self.avatar,
327 329
         }
328 330
 
329 331
 

+ 4 - 3
group/tourguidegroupuser_views.py

@@ -14,11 +14,10 @@ from group.models import GroupInfo, GroupUserInfo
14 14
 from utils.error.errno_utils import GroupStatusCode, GroupUserStatusCode, UserStatusCode
15 15
 from utils.error.response_utils import response
16 16
 from utils.group_photo_utils import get_current_photos
17
-from utils.redis.rgroup import get_group_info, get_group_users_info, set_group_users_info
17
+from utils.redis.rgroup import get_group_info, get_group_users_info, get_group_users_kv_info, set_group_users_info
18 18
 from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET,
19 19
                                GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET, TOUR_GUIDE_GROUP_CUR_GATHER_INFO,
20 20
                                TOUR_GUIDE_GROUP_CUR_SESSION, TOUR_GUIDE_GROUP_GEO_INFO, TOUR_GUIDE_GROUP_USER_GEO_LIST)
21
-from utils.redis.rprofile import get_profile_by_id
22 21
 from utils.redis.rtourguide import get_tour_guide_own_group
23 22
 from utils.redis.rtouruser import set_tour_user_belong_group
24 23
 
@@ -233,9 +232,11 @@ def tgu_group_user_locations_api(request):
233 232
     # [['x', 0.33, (2.68220901489e-06, 1.26736058093e-06)], []]
234 233
     locations = r.georadius(TOUR_GUIDE_GROUP_GEO_INFO % group_id, gather_info.get('gather_lon', 0), gather_info.get('gather_lat', 0), '+inf', unit='m', withdist=True, withcoord=True, sort='ASC')
235 234
     # [{'location_info': ['x', 0.33, (2.68220901489e-06, 1.26736058093e-06)], 'user_info': {}}, {}]
235
+    # 获取旅行团用户 KV 信息
236
+    group_users_kv_info = get_group_users_kv_info(group_id)
236 237
     locations = [{
237 238
         'location_info': loc,
238
-        'user_info': get_profile_by_id(loc[0])
239
+        'user_info': group_users_kv_info(loc[0])
239 240
     } for loc in locations]
240 241
 
241 242
     return response(200, 'Get Tour Guide Group All User Location Success', u'获取旅行团成员地理位置信息成功', {

+ 15 - 4
utils/redis/rgroup.py

@@ -6,7 +6,8 @@ from django.conf import settings
6 6
 from django.core.serializers.json import DjangoJSONEncoder
7 7
 
8 8
 from utils.redis.rkeys import (GROUP_INFO, GROUP_PHOTO_COMMENT_LIST, GROUP_PHOTO_DATA, GROUP_PHOTO_THUMB_UP,
9
-                               GROUP_PHOTO_THUMB_UP_LIST, GROUP_PHOTO_WATCHER_SET, GROUP_USERS_INFO)
9
+                               GROUP_PHOTO_THUMB_UP_LIST, GROUP_PHOTO_WATCHER_SET, GROUP_USERS_INFO,
10
+                               GROUP_USERS_KV_INFO)
10 11
 
11 12
 
12 13
 r = settings.REDIS_CACHE
@@ -43,12 +44,17 @@ def get_group_info(group_id):
43 44
 def set_group_users_info(group):
44 45
     """ 设置群组用户信息 """
45 46
     group_users = group.users(admin=False)
47
+
46 48
     group_users_data = {
47 49
         'group_users': group_users,
48 50
         'admin_id': group.admin_id,
49 51
     }
50 52
     r.setex(GROUP_USERS_INFO % group.group_id, settings.REDIS_EXPIRED_MONTH, json.dumps(group_users_data, cls=DjangoJSONEncoder))
51
-    return group_users_data
53
+
54
+    group_users_kv_data = {user_info.get('user_id', ''): user_info for user_info in group_users.get('passed', [])}
55
+    r.setex(GROUP_USERS_KV_INFO % group.group_id, settings.REDIS_EXPIRED_MONTH, json.dumps(group_users_kv_data, cls=DjangoJSONEncoder))
56
+
57
+    return group_users_data, group_users_kv_data
52 58
 
53 59
 
54 60
 def set_group_users_info_by_id(group_id):
@@ -57,19 +63,24 @@ def set_group_users_info_by_id(group_id):
57 63
     try:
58 64
         group = GroupInfo.objects.get(group_id=group_id)
59 65
     except GroupInfo.DoesNotExist:
60
-        return {}
66
+        return {}, {}
61 67
     return set_group_users_info(group)
62 68
 
63 69
 
64 70
 def get_group_users_info(group_id, user_id):
65 71
     """ 获取群组用户信息 """
66
-    group_users_data = json.loads(r.get(GROUP_USERS_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id)
72
+    group_users_data = json.loads(r.get(GROUP_USERS_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id)[0]
67 73
     group_users, admin_id = group_users_data.get('group_users', {}), group_users_data.get('admin_id', '')
68 74
     if group_users and user_id != admin_id:
69 75
         [group_users.pop(k) for k in ['applying_count', 'applying']]
70 76
     return group_users
71 77
 
72 78
 
79
+def get_group_users_kv_info(group_id):
80
+    """ 获取群组用户信息 """
81
+    return json.loads(r.get(GROUP_USERS_KV_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id)[1]
82
+
83
+
73 84
 # 群组照片相关
74 85
 
75 86
 

+ 1 - 0
utils/redis/rkeys.py

@@ -20,6 +20,7 @@ GROUP_INFO = 'group:info:%s'  # STRING,群组信息,group_id
20 20
 
21 21
 # 群组用户相关
22 22
 GROUP_USERS_INFO = 'group:users:info:%s'  # STRING,群组用户信息,group_id
23
+GROUP_USERS_KV_INFO = 'group:users:kv:info:%s'  # STRING,群组用户信息,group_id
23 24
 GROUP_USERS_APPLYING_SET = 'group:users:applying:set:%s'  # SET,群组用户申请集合,group_id
24 25
 GROUP_USERS_PASSED_SET = 'group:users:passed:set:%s'  # SET,群组用户通过集合,group_id
25 26
 GROUP_USERS_REFUSED_SET = 'group:users:refused:set:%s'  # SET,群组用户拒绝集合,group_id